//SPU管理模块的接口
import request from '@/utils/request';

import type { SkuInfoData, SkuData, HasSpuResponseData, AllTradeMark, SpuHasImg, SaleAttrResponseData, HasSaleAttrResponseData, SpuData } from './type';

enum API {
  //获取已有SPU信息
  HASSPU_URL = '/admin/product/',
  //获取全部品牌的数据
  ALLTRADEMARK_URL = '/admin/product/baseTrademark/getTrademarkList',
  //获取某一个SPU下的全部的售卖商品的图片数据
  IMAGE_URL = '/admin/product/spuImageList/',
  //获取某一个SPU下全部的已有的销售属性接口地址
  SPUHASSALEATTR_URL = '/admin/product/spuSaleAttrList/',
  //获取整个项目全部的销售属性【颜色、版本、尺码】
  ALLSALEATTR_URL = '/admin/product/baseSaleAttrList',
  //追加一个新的SPU
  ADDSPU_URL = '/admin/product/saveSpuInfo',
  //更新已有的SPU（失效
  // UPDATESPU_URL = '/admin/product/updateSpuInfo',
  //追加一个新增的SKU地址
  ADDSKU_URL = '/admin/product/saveSkuInfo',
  //查看某一个已有的SPU的全部SKU
  SKUINFO_URL = '/admin/product/findBySpuId/',
  //删除spu
  REMOVESPU_URL = '/admin/product/deleteSpu/',
}

/**
 *
 *  获取某一个三级分类下的SPU
 * @param page 页数
 * @param limit 页面数据数量
 * @param category3Id 第三级分类选择的id
 */
export function reqHasSpu(page: number, limit: number, category3Id: string | number) {
  return request<any, HasSpuResponseData>({
    url: `${API.HASSPU_URL}${page}/${limit}`,
    method: 'get',
    params: {
      category3Id,
    },
  });
}

/**
 *
 *全部品牌信息
 */
export function reqAllTradeMark() {
  return request<any, AllTradeMark>({
    url: API.ALLTRADEMARK_URL,
    method: 'get',
  });
}

/**
 *
 * 获取某一个SPU下的全部的售卖商品的图片数据
 * @param spuId SPUid
 */
export function reqSpuImageList(spuId: number) {
  return request<any, SpuHasImg>({
    url: API.IMAGE_URL + spuId,
    method: 'get',
  });
}

/**
 *
 * 获取整个项目全部的销售属性【颜色、版本、尺码】
 * @param spuId SPUid
 */
export function reqSpuHasSaleAttr(spuId: number) {
  return request<any, SaleAttrResponseData>({
    url: API.SPUHASSALEATTR_URL + spuId,
    method: 'get',
  });
}

/**
 *
 * 获取某一个SPU下全部的已有的销售属性接口地址
 */
export function reqAllSaleAttr() {
  return request<any, HasSaleAttrResponseData>({
    url: API.ALLSALEATTR_URL,
    method: 'get',
  });
}

/**
 *
 * 添加SPU
 * @param data :SpuData
 */
export function reqAddOrUpdateSpu(data: SpuData) {
  if (data.id) {
    return request<any, any>({
      // url: API.UPDATESPU_URL,
      //修改接口返回失败，无法修改，所以这里就用新增代替了
      url: API.ADDSPU_URL,
      method: 'post',
      data,
    });
  } else {
    return request<any, any>({
      url: API.ADDSPU_URL,
      method: 'post',
      data,
    });
  }
}

/**
 *
 * 添加SKU
 * @param data SkuData
 */
export function reqAddSku(data: SkuData) {
  return request<any, any>({
    url: API.ADDSKU_URL,
    method: 'post',
    data,
  });
}

/**
 *
 * 添加SKU
 * @param spuId spuId
 */
export function reqSkuList(spuId: number | string) {
  return request<any, SkuInfoData>({
    url: API.SKUINFO_URL + spuId,
    method: 'get',
  });
}

/**
 *
 * 删除已有的SPU
 * @param spuId spuId
 */
export function reqRemoveSpu(spuId: number | string) {
  return request<any, any>({
    url: API.REMOVESPU_URL + spuId,
    method: 'delete',
  });
}
